home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / e / amigae30a_fr.lha / AmigaE30f / Sources / Tools / ILBM / picwindow.e < prev    next >
Encoding:
Text File  |  1994-10-06  |  3.3 KB  |  93 lines

  1. /*
  2.  
  3.         picwindow.e                          Michael Zucchi 1994
  4.  
  5.         Charge une image dans une fenêtre sur le WorkBench (sans couleurs...)
  6.         Démontre l'utilisation du module ILBM - le chargement dans les bitmaps,
  7.         et comment obtenir les informations sur l'image. Il montre aussi le
  8.         requête de fichier asl.
  9.  
  10.         Ce programme peut être librement distribué au sein des propriétaires
  11.         enregitrés de l'AmigaE.
  12.  */
  13.  
  14.  
  15. MODULE 'tools/ilbm', 'tools/ilbmdefs',
  16.         'intuition/intuition',
  17.         'asl', 'libraries/ASL'
  18.  
  19. DEF bm,win:PTR TO window,
  20.         buffer[256]:ARRAY
  21.  
  22. PROC main()
  23. DEF ilbm,filename,width,height,bmh:PTR TO bmhd,pi:PTR TO picinfo
  24.  
  25. IF filename:=requestfile('Select picture')
  26.         IF ilbm:=ilbm_New(filename,0)
  27.                 ilbm_LoadPicture(ilbm,[ILBML_GETBITMAP,{bm},0])
  28.  
  29.                 -> prend un pointeur SUR les infos des images, on sort
  30.                 ->l'entête bitmap, et lit la taille de l'image.
  31.                 pi:=ilbm_PictureInfo(ilbm)
  32.                 bmh:=pi.bmhd;
  33.                 width:=bmh.w;
  34.                 height:=bmh.h;
  35.  
  36.                 -> le gestionnaire ilbm n'est plus nécessaire, on peut le libérer
  37.                 ilbm_Dispose(ilbm)
  38.  
  39.                 -> si un bitmap est actuellement ouvert, ouvre une fenêtre, et le 'blit'
  40.                 IF bm
  41.                         IF win:=OpenWindowTagList(0,[WA_INNERWIDTH,width,WA_INNERHEIGHT,height,
  42.                                 WA_AUTOADJUST,-1,
  43.                                 WA_IDCMP,IDCMP_CLOSEWINDOW,
  44.                                 WA_FLAGS,WFLG_CLOSEGADGET+WFLG_DRAGBAR+WFLG_DEPTHGADGET,
  45.                                 WA_TITLE,filename,
  46.                                 WA_SCREENTITLE,'Pic-Window 0.1 1994 Michael Zucchi',0])
  47.  
  48.                                 -> bit dans les dimensions actuelles que l'OS pourrait nous donner (La fenêtre peut ne pas être aussi grande que l'image)
  49.                                 BltBitMapRastPort(bm,0,0,win.rport,
  50.                                         win.borderleft,win.bordertop,
  51.                                         win.width-win.borderright-win.borderleft,
  52.                                         win.height-win.borderbottom-win.bordertop,$c0);
  53.  
  54.                                 WaitPort(win.userport)
  55.                                 CloseWindow(win)
  56.  
  57.                         ENDIF
  58.                         ilbm_FreeBitMap(bm)
  59.                 ENDIF
  60.         ENDIF
  61. ENDIF
  62.  
  63. ENDPROC
  64.  
  65. /*
  66.         Affiche une requête de fichier asl. Si l'utilisateur choisit un fichier,
  67.         son nom est étendu à son chemin entier.
  68.  */
  69. PROC requestfile(title)
  70. DEF name=0,fr:PTR TO filerequester
  71.  
  72. IF aslbase:=OpenLibrary('asl.library',36)
  73.         IF fr:=AllocAslRequest(ASL_FILEREQUEST,[ASLFR_TITLETEXT,title,0])
  74.                 IF AslRequest(fr,0)
  75.  
  76.                         -> désolé, un peu d'asm ici. Ben ... Sinon comment?
  77.                         -> ça fait une copie de chaine (strcpy()) ...
  78.                         MOVE.L  fr,A0
  79.                         MOVE.L  8(A0),A0        -> pointeur de répertoire de la requête
  80.                         MOVE.L  buffer,A1
  81.                 cp:     MOVE.B  (A0)+,(A1)+
  82.                         BNE.S   cp
  83.  
  84.                         AddPart(buffer,fr.file,256)
  85.                         name:=buffer
  86.                 ENDIF
  87.                 FreeAslRequest(fr)
  88.         ENDIF
  89.         CloseLibrary(aslbase)
  90. ENDIF
  91.  
  92. ENDPROC name
  93.